package com.leetcode.sorts.arrays.binary_search;

/**
 * @Author: WuPeng
 * @Date: 2021/5/20 5:30 下午
 *
 * 367: 有效的完全平方数
 *      给定一个正整数 num ，编写一个函数，如果 num 是一个完全平方数，
 *      则返回 true ，否则返回 false 。
 *
 * 进阶：不要使用任何内置的库函数，如sqrt
 *
 * 示例 1：
 *      输入：num = 16
 *      输出：true
 *
 * 示例 2：
 *      输入：num = 14
 *      输出：false
 *
 */
public class EffectiveSqrtNum_367 {

    public static boolean solution(int target){
        if (target < 2){
            return true;
        }
        int left=0, right=target/2;
        while (left <= right){
            int mid = (left + right) >> 1;
            if ((long)mid * mid < target){
                left = mid + 1;
            }
            else if ((long)mid * mid > target){
                right = mid - 1;
            }
            else{
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        System.out.println(solution(8));
    }

}
